#include "wfx.h"
#include "ScannerRule.h"


#include "ScannerRuleIMPL.h"


CScannerRule::CScannerRule()
{
	pImplement = new CScannerRule::IMPL();
	LOG("Initialize CScannerRule");
}

CScannerRule::~CScannerRule()
{
	delete pImplement;
	LOG("Destruct CScannerRule");
}

int CScannerRule::RegisterSpecialToken(const char* pToken, Token_Type Type)
{
	return pImplement->RegisterSpetialToken(pToken, Type);
}

CTerminateTokenPtr CScannerRule::ScanSpecialToken(CCodePtr pCode)
{
	return pImplement->ScanSpetialToken(pCode);
}

int CScannerRule::RegisterSkipSpaceFunc( SkipSpaceFunc func )
{
	return pImplement->RegisterSkipSpaceFunc(func);
}


void CScannerRule::SkipSpace( CCodePtr pCode )
{
	return pImplement->SkipSpace(pCode);
}

int CScannerRule::RegisterNumberScanFunc( NumberScanFunc func )
{
	return pImplement->RegisterNumberScanFunc(func);
}

int CScannerRule::RegisterWordScanFunc( WordScanFunc func )
{
	return pImplement->RegisterWordScanFunc(func);
}

CTerminateTokenPtr CScannerRule::ScanNumber( CCodePtr pCode )
{
	return pImplement->ScanNumber(pCode);
}

CTerminateTokenPtr CScannerRule::ScanWord( CCodePtr pCode )
{
	return pImplement->ScanWord(pCode);
}

int CScannerRule::RegisterKeyWord( const char* pKeyWord, Token_Type Type )
{
	return pImplement->RegisterKeyWord(pKeyWord, Type);
}

CTerminateTokenPtr CScannerRule::ScanString( CCodePtr pCode )
{
	return pImplement->ScanString(pCode);
}

int CScannerRule::RegisterStringScanFunc( StringScanFunc func )
{
	return pImplement->RegisterStringScanFunc(func);
}
